/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.presentacion.producto;

import com.mindbox.mueblesalpes.negocio.entity.Mueble;
import com.mindbox.mueblesalpes.negocio.entity.TipoMueble;
import com.mindbox.mueblesalpes.negocio.producto.IProducto;
import com.mindbox.mueblesalpes.negocio.producto.ProductoMock;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import java.util.List;
import javax.faces.context.FacesContext;
import org.richfaces.component.html.HtmlDataTable;

/**
 *
 * @author Catalina
 */

public class ProductoListBean {

    private static final String EDIT = "edit";
    private static final String INSERT = "insert";
    private static final String INVENTARIO = "inventario";
    
    private String referencia;
    private String nombre;
    private String tipo;

    private List<Mueble> listMuebles;
    private HtmlDataTable tabla;
    private IProducto delegate;
    private int seleccionProductoEliminar;
    

    /** Creates a new instance of ProductoListBean */
    public ProductoListBean() {
        referencia = new String();
        nombre = new String();
        tipo = new String();

        tabla = new HtmlDataTable();
        delegate = new ProductoMock();
        seleccionProductoEliminar = 0;
        listMuebles = delegate.consultarMuebles();
    }

    public String editar(){
        int seleccion = (Integer) tabla.getRowKey();

        if (seleccion > listMuebles.size()) {
            return null;
        }

        Mueble muebleSeleccionado = (Mueble) listMuebles.get(seleccion);

        FacesContext facesContext = FacesContext.getCurrentInstance();
        facesContext.getExternalContext().getSessionMap().put("MuebleEdit", muebleSeleccionado);

        return EDIT;
    }

    public String consultarMuebles(){
        listMuebles = delegate.consultarMuebles();
        return null;
    }

    public String consultarMueble(){

        Mueble mueble = new Mueble();
        try{
            if(referencia != null && !referencia.equals("")){
                mueble.setReferencia(referencia);
            }
            if(nombre != null && !nombre.equals("")){
                mueble.setNombre(nombre);
            }
            if(tipo.equals(TipoMueble.EXTERIOR.toString())){
                mueble.setTipoMueble(TipoMueble.EXTERIOR);
            }else if(tipo.equals(TipoMueble.INTERIOR.toString())){
                mueble.setTipoMueble(TipoMueble.INTERIOR);
            }
            listMuebles = delegate.consultarMueble(mueble);
        }catch(Exception e){
            Mensajes.asignarMensajeError("search.error");
        }
        return null;
    }

    public String insert(){
        referencia = "";
        nombre = "";
        tipo = "";
        return INSERT;
    }

    public String inventario(){
        referencia = "";
        nombre = "";
        tipo = "";
        return INVENTARIO;
    }

    public String eliminar(){
        
        try{
            if (seleccionProductoEliminar > listMuebles.size()) {
                return null;
            }

            Mueble muebleSeleccionado = (Mueble) listMuebles.get(seleccionProductoEliminar);
            boolean result = delegate.eliminarProducto(muebleSeleccionado);
            if(!result){
                Mensajes.asignarMensajeError("search.delete.error");
            }
            listMuebles = delegate.consultarMuebles();
            referencia = "";
            nombre = "";
            tipo = "";
        }catch(Exception e){
            Mensajes.asignarMensajeError("search.delete.error");
        }
        return null;
    }

        public String obtenerProductoEliminar(){
        try{
            seleccionProductoEliminar = (Integer) tabla.getRowKey();

        }catch(Exception e){
            Mensajes.asignarMensajeError("search.delete.error");
        }
        return null;
    }


    public HtmlDataTable getTabla() {
        return tabla;
    }

    public void setTabla(HtmlDataTable tabla) {
        this.tabla = tabla;
    }

    public List<Mueble> getListMuebles() {
        return listMuebles;
    }

    public void setListMuebles(List<Mueble> listMuebles) {
        this.listMuebles = listMuebles;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getReferencia() {
        return referencia;
    }

    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
    
}
